package com.zm.blog.enums;

/**
 * 枚举类CodeMsg，其中定义了一些常见的状态码和消息
 */
public enum  CodeMsg {

    SUCCESS(200,"成功！"),
    PARAMETER_ERROR(400, "参数异常！"),
    NOT_LOGIN(401, "未登陆，请登陆后再进行操作！"),
    LOGIN_EXPIRED(402, "登录已过期，请重新登陆！"),
    SYSTEM_REPAIR(503, "系统维护中，敬请期待！"),
    FAIL(500, "服务异常！");


    private int code;
    private String msg;

    CodeMsg(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    public int getCode() {
        return code;
    }

    public String getMsg() {
        return msg;
    }

    /**
     * 根据状态码查找对应的枚举对象
     * @param code 状态码
     * @return 匹配的枚举，未找到时返回null
     */
    public static CodeMsg findByCode(int code) {
        for (CodeMsg status : values()) {
            if (status.code == code) {
                return status;
            }
        }
        return null;
    }

    /**
     * 安全获取消息（避免NPE）
     * @param code 状态码
     * @return 对应的消息文本，未找到时返回默认错误消息
     */
    public static String getSafeMessage(int code) {
        CodeMsg result = findByCode(code);
        return result != null ? result.getMsg() : FAIL.getMsg();
    }

}
